import torch  # 导入torch库

# 定义一个名为inputs的张量，包含6个3维向量，每个向量表示一个嵌入词元
inputs = torch.tensor(
    [[0.43, 0.15, 0.89],  # "Your" 对应的嵌入向量 (x^1)
     [0.55, 0.87, 0.66],  # "journey" 对应的嵌入向量 (x^2)
     [0.57, 0.85, 0.64],  # "starts" 对应的嵌入向量 (x^3)
     [0.22, 0.58, 0.33],  # "with" 对应的嵌入向量 (x^4)
     [0.77, 0.25, 0.10],  # "one" 对应的嵌入向量 (x^5)
     [0.05, 0.80, 0.55]]  # "step" 对应的嵌入向量 (x^6)
)

attn_scores = inputs @ inputs.T  # 通过矩阵乘法计算注意力得分
print(attn_scores)  # 打印注意力得分

attn_weights = torch.softmax(attn_scores, dim=-1)  # 对每一行进行softmax归一化
print(attn_weights)  # 打印归一化后的注意力权重

all_context_vecs = attn_weights @ inputs  # 通过矩阵乘法计算所有上下文向量
print(all_context_vecs)  # 打印所有上下文向量






